<!DOCTYPE HTML>
<html>
<head>
<title>While Loop | AutoHotkey</title>
<meta name="description" content="The While loop statement performs a series of code lines repeatedly until the specified expression evaluates to false." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
</head>
<body>

<h1>While 循环 <span class="ver">[v1.0.48+]</span></h1>

<p>重复执行一系列命令, 一直到指定的<a href="../Variables.htm#Expressions">表达式</a>计算结果为假.</p>

<pre class="Syntax">
<span class="func">While</span> <i>Expression</i>
<span class="func">While</span>(<i>Expression</i>)
</pre>
<h2>参数</h2>
<dl>

  <dt>Expression</dt>
  <dd><p>任何有效的<a href="../Variables.htm#Expressions">表达式</a>. 例如: <code>while x &lt; y</code>.</p></dd>

</dl>

<h2>备注</h2>
<p>在每次重复执行前都会计算一次表达式. 如果表达式计算结果为 true(即除空字符串和数值 0 以外的任何结果), 那么执行循环体; 否则跳到循环体之后一行执行.</p>
<p>while 循环后通常跟着<a href="Block.htm">区块</a>, 这是组成循环 <em>体</em> 语句的集合. 不过, 在单语句的循环中可以不使用区块(用于此目的时 "if" 与其相匹配的 "else" 一起被视为单语句).</p>
<p id="otb">可以使用 One True Brace(OTB) 风格, 这样允许左大括号与 while 在同一行而不是在其下面. 例如: <code>while x &lt; y {</code>.</p>
<p>内置变量 <strong>A_Index</strong> 包含当前循环重复的次数. 首次计算循环的表达式和执行循环体时其值为 1. 第二次时其值为 2; 依此类推. 如果一个内层循环包含在一个外层循环中, 那么内层循环具有优先权. A_Index 在所有类型的循环中都有效, 但是在循环外部时其值为 0.</p>
<p>和所有的循环一样, 可以使用 <a href="Break.htm">Break</a> 提前退出循环. 同样地, 可以使用 <a href="Continue.htm">Continue</a> 跳过当前循环的剩余部分, 此时 A_Index 增加 1 且重新计算 while 循环的表达式. 如果结果仍为 true, 开始新的循环; 否则循环结束.</p>
<p>专用循环: 循环可以用来自动获取文件, 文件夹或注册表项(每次一个). 请参阅<a href="LoopFile.htm">文件循环</a>和<a href="LoopReg.htm">注册表循环</a>了解详细信息. 此外, <a href="LoopReadFile.htm">文件读取循环</a>可以对整个文件的内容进行操作, 每次一行. 最后, <a href="LoopParse.htm">解析循环</a>可以对包含在可分隔的字符串中的单独片段进行操作.</p>
<h2>相关</h2>
<p><a href="Until.htm">Until</a>, <a href="Break.htm">Break</a>, <a href="Continue.htm">Continue</a>, <a href="Block.htm">区块</a>, <a href="Loop.htm">Loop</a>, <a href="For.htm">For 循环</a>, <a href="LoopFile.htm">文件和文件夹循环</a>, <a href="LoopReg.htm">注册表循环</a>, <a href="LoopReadFile.htm">文件读取循环</a>, <a href="LoopParse.htm">解析循环</a>, <a href="IfExpression.htm">If (表达式)</a></p>
<h2>示例</h2>
<pre class="NoIndent"><em>; 当用户按住鼠标左键拖动时, 在拖动区域中会出现工具提示显示区域的大小.</em>

CoordMode, Mouse, Screen

~LButton::
    MouseGetPos, begin_x, begin_y
    <strong>while</strong> GetKeyState(&quot;LButton&quot;)
    {
        MouseGetPos, x, y
        ToolTip, % begin_x &quot;, &quot; begin_y &quot;`n&quot; Abs(begin_x-x) &quot; x &quot; Abs(begin_y-y)
        Sleep, 10
    }
    ToolTip
return</pre>

</body>
</html>